【PHP/演習問題】クラスの継承[1]
問題
次の実行結果になるプログラムを作成してください。
なお、下記条件を満たすものとします。
- 下記表の3つのクラスを作成する
- 実行結果になるように各クラスのインスタンスを使う
クラス | 英記 | 継承元 | フィールド | メソッド |
---|---|---|---|---|
乗り物クラス | Vehicle |
なし | ・$distance (移動距離)
※ 初期値は0 |
・move()
→ "移動します。" を出力し、$distance の値を20加算する。
・ display_distance()
→ $distance の値を出力 |
車クラス | Car |
Vehicle |
なし | ・run()
→ "走行します。" を出力し、$distance の値を50加算する。 |
飛行機クラス | Airplane |
Vehicle |
なし | ・fly()
→ "飛行します。" を出力し、$distance の値を50加算する。 |
===== 乗り物クラスのインスタンス =====
移動します。
移動距離 : 20km
===== 車クラスのインスタンス =====
走行します。
走行します。
移動距離 : 100km
===== 飛行機クラスのインスタンス =====
飛行します。
飛行します。
飛行します。
移動距離 : 2400km
解答例
<?php
class Vehicle {
public $distance = 0;
public function move() {
echo "移動します。\n";
$this->distance += 20;
}
public function display_distance() {
echo '移動距離 : '.$this->distance."km\n";
}
}
class Car extends Vehicle {
public function run() {
echo "走行します。\n";
$this->distance += 50;
}
}
class Airplane extends Vehicle {
public function fly() {
echo "飛行します。\n";
$this->distance += 800;
}
}
echo "===== 乗り物クラスのインスタンス =====\n";
$vehicle = new Vehicle();
$vehicle->move();
$vehicle->display_distance();
echo "===== 車クラスのインスタンス =====\n";
$car = new Car();
$car->run();
$car->run();
$car->display_distance();
echo "===== 飛行機クラスのインスタンス =====\n";
$airplane = new Airplane();
$airplane->fly();
$airplane->fly();
$airplane->fly();
$airplane->display_distance();
?>